// pages/complaintAdd/complaintAdd.js
const app = getApp();
import CommonService from '../../utils/service/commonService.js';
import Toast from '../../miniprogram_npm/@vant/weapp/toast/toast';
const util = require('../../utils/util');
import Base64 from '../../utils/Base64.js';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    //当前用户
    user: null,
    //传参
    paramObj: null,
    //传参来的id
    id: null,
    //是否是修改
    isEdit: false,
    //修改信息回显
    editInfo: {},
    //提交按钮禁用
    disabled: false,
    //避免表单重复提交
    code: null,
		//项目id
		projectId: null,
		scancode_time: null,
		//项目信息
		projectObj: null,
		//提示关注公众号
    showWeChatDia:false,
		//公众号名称
		officialName:'',
		//选择框
    showSelect:false,
    //选择数据
    selectList:[],
    //当前选择
    selectField:'',
    //选择框标题
    selectTitle:'',
    //显示选择搜索框
		showSelectSearch:false,
		//显示提示信息
		showTips: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
		let user = app.globalData.userInfo;
		if(user){
			this.setData({
				code: Base64.encode(new Date() + app.globalData.userInfo.userName),
				user: user
			})

		}else{
			this.setData({
				code: Base64.encode(new Date() + '123456'),
				//公众号名称
				officialName: app.globalData.officialName,
				//显示关注公众号
				showWeChatDia: true
      })
      
      console.log(options.q);

			//获取到二维码原始链接内容
			const scanCon = decodeURIComponent(options.q);
			//测试
			//let scanCon = 'https://iot.landiwulian.com/#/equipmentList/list?paramObj={"projectld":102177,"projectName":"投诉工单项目"}';

			//字符串截取
			let inx = scanCon.lastIndexOf("?paramObj=");
			let str = scanCon.substring(inx+1,scanCon.length);
			str = str.replace('paramObj=','');
      console.log(str);
      console.log("str");
			//参数信息
			this.setData({
				paramObj: JSON.parse(str)
      })
      
      console.log(this.data.paramObj)
      console.log("传参传参")
      console.log(this.data.paramObj.projectId)
			//查询项目信息（项目名称、项目负责人）
			this.getProject();
		}
	},

  //提交表单###
  confirmForm(e){
    //避免表单重复提交-先禁用按钮
    this.setData({
      disabled:true
		})
		
		let obj = e.detail.value;
    let td = this.data;
    let editInfo = td.editInfo;
		let user = td.user;
		let phone = '';

		if(user){
			phone = user.personalPhone;
		}else{
			//手机号必填
			phone = obj.phone.trim();
			if(!this.formNotEmpty(phone,'phoneMessage','请输入手机号')){
				return;
			}

			//手机号格式    
			if(!util.checkPhoneFormat(phone)){
				this.setData({
					phoneMessage: '手机号格式错误',
					disabled: true
				})
				return;
			}
		}

		//项目必填
		if(!td.projectObj){
			Toast.fail('请选择项目');
      return;
		}

    let place = obj.place.trim();
    if(!this.formNotEmpty(place,'placeMessage','请输入投诉地点')){
      return;
    }

    let problem = obj.problem.trim();
    if(!this.formNotEmpty(problem,'problemMessage','请输入问题描述')){
      return;
    }

    let param={
			//表名complaint_order
      className:'complaintOrder',
      data:{
				requestToken: td.code,
				id: td.id,
				//项目
				project: {
					id: td.projectObj.id,
					name: td.projectObj.name
				},
				//派单人（项目设置中的负责人）
				dispatchUser: td.projectObj.cleanLeader,
				//姓名
				name: obj.name.trim(),
				//电话
				phone: phone,
				//住址
				address: obj.address.trim(),
        //投拆地点
				place: place,
        //问题描述
        problem: problem,
        //图
				pic: editInfo.pic,
				//数据权限
				dataAuthority:{
					depart: [td.projectObj.id, td.projectObj.companyId]
				},
				//状态变为待派单（待派单0，待处理2，待验收3，已完成1）
				state: 0,
				//应用id
				appId: [app.globalData.myAppId]
      }
		}

		//创建人
		if(user){
			param.data.createUser={
				id: user.id,
				userName: user.userName
			}
		}else{
			param.data.createUser={
				id: null,
				userName: '公众号扫码'
			}
		}

		// console.log(param.data);
		// return;

    //避免表单重复提交
    Toast.loading({
      duration: 0,
      forbidClick: true,
      message: '数据提交中...'
    });

    CommonService.goSave(param).then(res=>{
      this.setData({
        disabled:false
      })
      if (res.statusCode == 200 && res.data.success == true){
				Toast.success('成功');
				
				//查询用户是否已存在（不存在的再创建）
				if(!user){
					this.findUser(param.data.phone, res.data.data.id);
				}

				//给项目负责人推送消息
				this.pushMessage(param.data);

				//登录的跳转列表
				if(user){
					setTimeout(() => {
						//返回列表页并刷新数据
						this.backAndRefresh();
					}, 1000);
				}
      }else if(res.statusCode==202){
        Toast.fail('您操作太快了,请勿重复提交');
      }else{
        Toast.fail('操作失败');
      }
    }).catch((error) => {
      Toast.fail('操作失败');
    })
	},

	//查询项目信息
	getProject(){
		let param={
      isAuth: false,
      className: 'depart',
      data:{
        id: this.data.paramObj.projectId,
        nbl: Base64.encode(util.timeFormatDay(new Date())),
        selectFields: ['id','name','cleanLeader','companyId']
      }
    }
    console.log("param"),
    console.log(param),
		CommonService.goFindList(param).then(res=>{
			if (res.data.data && res.data.data.result && res.data.data.result.length) {
				let result = res.data.data.result[0];
				console.log('项目信息');
				console.log(result)

				//项目信息
				this.setData({
					projectObj: result
				})
			}
		}).catch((error) => {
		})
	},

	//推送消息
	pushMessage(obj){
		let pObj = this.data.projectObj;
		if(pObj.cleanLeader && pObj.cleanLeader.id){
			let param={
				//接收人user表id（派单人，也就是项目负责人）
				userId: [pObj.cleanLeader.id],
				file: 'ownersComplaints',
				//跳转
				jump: true,
				data:{
					//项目名
					thing31: pObj.name,
					//创建时间
					time51: util.timeFormat(new Date()),
					//工单标题（投诉问题）
					thing33: obj.problem,
					//发生地址（投诉地点）
					thing53: obj.place,
					//工单状态
					phrase15: '待派单'
				}
			}
	
			CommonService.sendMessage(param).then(res=>{
			}).catch((error) => {
			})
		}
	},

  //非空验证（field要先去掉空格）
  formNotEmpty(field,messageField,messageCon){
    if(!field){
      let obj = {};
      obj[messageField] = messageCon;
      obj['disabled'] = true;
      this.setData(obj);
      return false;
    }else{
      return true;
    }
  },

  //用户输入时清除错误提示
  clearMessage(e) {
    let field = e.target.dataset.message;
    let obj = {};
    obj[field] = "";
    obj['disabled'] = false;
    this.setData(obj);
  },

  //获取图片上传组件的传值
  getUploadUrl(data){
    let imgUrls=data.detail;
    let pic='editInfo.pic';

    if(imgUrls.length){
      this.setData({
        [pic]: imgUrls
      })
    }else{
      this.setData({
        [pic]: null
      })
		}
		
		this.setData({
			disabled: false
		})
  },

  //返回列表页并刷新数据
  backAndRefresh(){
    let pages = getCurrentPages();
    let prevPage = pages[pages.length - 2];

    prevPage.refreshListAndPage();
    wx.navigateBack();
	},
	
	//查询用户是否已存在
	findUser(phone, orderId){
		let param={
      isAuth: false,
      className:'user',
      data:{
        complex:[{or:{"userName":phone,"personalPhone":phone}}],
        nbl: Base64.encode(util.timeFormatDay(new Date())),
        selectFields: ["id"]
      }
    }
 
		CommonService.goFindList(param).then(res=>{
			if (res.data.data && res.data.data.result && res.data.data.result.length) {
				let result = res.data.data.result
				//创建完用户将工单中的创建人id更新
				this.upDateCreateUser(phone, orderId, result[0].id);

				//跳转投诉工单列表页
				wx.reLaunch({
					url: "/packageA/pages/complaintList/complaintList"
				})

			} else {
				//创建用户
				this.createOrderUser(phone, orderId);
			}
		}).catch((error) => {
		})		
	},

	//创建用户
	createOrderUser(phone, orderId){
		let pObj = this.data.projectObj;

		let param={
			className: 'user',
			data:{        
				id: null,
				//用户名是手机号
				userName: phone,
				//初始密码
				password: "123456",
				//手机号
				personalPhone: phone,
				//加到扫码的这个部门的顶级部门
				depart: pObj.companyId,
				//角色为 投诉工单用户
				role: [132],
				//类型为客户
				type: 4,
				//数据权限：部门、项级部门
				dataAuthority: {					
					depart: [pObj.id, pObj.companyId]
				},
				//应用id
				appId: [app.globalData.myAppId]
			}
		}
		
		// console.log(param);
		// return;

		CommonService.goSave(param).then(res=>{
			//创建完用户将工单中的创建人id更新
			this.upDateCreateUser(phone, orderId, res.data.data.id);

			//弹出让用户绑定微信
			this.setData({
				showTips: true
			})
			
			//登录页输入框显示用户的手机号和密码
			let parameter = {
				userName: phone,
				password: '123456'
			};
			wx.setStorageSync("loginInputLast",parameter);			
		}).catch((error) => {      
		})
	},

	//创建完用户将工单中的创建人id更新
	upDateCreateUser(phone, orderId, userId){
		let param={
			className: 'complaintOrder',
			data:{        
				id: orderId,
				createUser:{
					id: userId,
					userName: phone
				}
			}			
		}

		CommonService.goSave(param).then(res=>{

		}).catch((error) => {      
		})
	},

	//确认-跳转关注公众号
  confirmWeChat(){
    wx.navigateTo({
      url: "/pages/weChatOfficial/weChatOfficial"
    })
	},
	
	//显示选择框
  onShowSelect(e){
    this.setData({
      selectList: []
    })

    let dataset=e.currentTarget.dataset;
    let field=dataset.field;

    this.setData({
      showSelect: true,
      selectField: field
    })

    //项目
    if(field=='project'){
      this.setData({
        selectTitle: '项目',
        showSelectSearch: true
      })
      this.getProjectList();
    }
  },

  //隐藏选择框
  onCloseSelect(){
    this.setData({
      showSelect: false,
      valueSearch: '',
      disabled: false
    })
  },

  //确认选项
  onConfirmSelect(e){
    let selectField=this.data.selectField;
    let id=null,name=null,obj=null;

    //项目
    if(selectField=='project'){
      obj='projectObj';      
    }

    if(id && name){
      this.setData({
        [id]:e.detail.value.id,
        [name]:e.detail.value.text
      })
    }

    if(obj){
      this.setData({
        [obj]:e.detail.value.obj
      })
    }

    this.onCloseSelect();
  },

  //清除选项
  onCancelSelect(){
    let selectField=this.data.selectField;
    let id=null,name=null,obj=null;

    //项目
    if(selectField=='project'){
      obj='projectObj';     
    }

    if(id && name){
      this.setData({
        [id]:null,
        [name]:''
      })
    }

    if(obj){
      this.setData({
        [obj]:null
      })
    }

    this.onCloseSelect();
  },

  //选择框搜索
  onChangeSelectVal(e){
    let selectField=this.data.selectField;

    this.setData({
      valueSearch: e.detail
    })

    //项目
    if(selectField=='project'){
      this.getProjectList();
    }
  },

  //查询项目
  getProjectList(){
    let param = {
      isAuth: true,
      className: 'depart',
      data: {
				searchAll: true,
				isProject: true,
        selectFields: ['id','name','cleanLeader','companyId']
      }
    }

    if(this.data.valueSearch){
      param.data.name='%' + this.data.valueSearch + '%';
    }

    CommonService.goFindList(param).then(res=>{
      if(res.data.data && res.data.data.result && res.data.data.result.length){
        let result=res.data.data.result;
        let arr=[];
        result.forEach(item => {
          arr.push({
            text:item.name,
            id:item.id,
            obj:{
              id: item.id,
              name: item.name,
              cleanLeader: item.cleanLeader,
              companyId: item.companyId
            }
          });
        });

        this.setData({
          selectList: arr
        })
      }
    }).catch((error) => {
    })
	},
	
	//点击提示框确认按钮
	onConfirmTips(){
		// this.setData({
		// 	showTips: false
		// })

		//跳转投诉工单列表页
		wx.reLaunch({
			url: "/packageA/pages/complaintList/complaintList"
		})
	},

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  }
})